package com.example.demo.service;

import com.example.demo.dto.ApiResponse;
import com.example.demo.entity.Reservation;
import com.example.demo.entity.User;
import com.example.demo.entity.ReservationStatus;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

public interface ReservationService {
    ApiResponse<?> createReservation(Long userId, Reservation reservation);
    ApiResponse<?> updateReservation(Reservation reservation);
    ApiResponse<?> deleteReservation(Long id);
    ApiResponse<?> getReservationById(Long id);
    ApiResponse<?> getReservationsByStudent(User student);
    ApiResponse<?> getReservationsByStatus(ReservationStatus status);
    ApiResponse<?> getReservationsByApprover(User approver);
    ApiResponse<?> getReservationsByDateRange(LocalDateTime start, LocalDateTime end);
    ApiResponse<?> approveReservation(Long id);
    ApiResponse<?> rejectReservation(Long id);
    ApiResponse<?> cancelReservation(Long id);
    ApiResponse<?> getUserReservations(Long userId);
    ApiResponse<?> getLabReservations(Long labId);
} 